package SemanticoPacote;

import SintaticoPacote.*;
import SintaticoPacote.TratamentoErro.ErroTabela;
import SintaticoPacote.TratamentoErro.TabelaErros;
import compilador_full.TabelaSimbolos;

/**
 *
 * @author Wilson
 */
/************************************************ /
<declaracaoMain> ::= void main (){ <cmd> }
/*************************************************/

public class declaracaoMetodoMain {

    cmd cmd = new cmd();
    parametros parametros = new parametros();

    public void declaracaoMetodoMain(TabelaSimbolos tabelaSimbolos) {

         tabelaSimbolos.soConsome();//consome void
         tabelaSimbolos.soConsome();//consome main
         tabelaSimbolos.soConsome();//consome (
         tabelaSimbolos.soConsome();//consome )
         tabelaSimbolos.soConsome();//consome {

         while(!tabelaSimbolos.getLookahead().equals("}")){
          //o escopo de qualquer variavel ou metodo declarado dentro da main = main
            cmd.sintaxeCmd(tabelaSimbolos, "main");
         }

        tabelaSimbolos.soConsome();//consome }
    }
}


    /*public boolean declaracaoMetodoMain(TabelaSimbolos tabelaSimbolos) {

        System.out.println("main " + tabelaSimbolos.getLookahead());
        if (tabelaSimbolos.reconhecer("void")) {
            if (tabelaSimbolos.reconhecer("main")) {
                if (tabelaSimbolos.reconhecer("(")) {
                    if (tabelaSimbolos.reconhecer(")")) {
                        if (tabelaSimbolos.reconhecer("{")) {
                           
                            while(!tabelaSimbolos.getLookahead().equals("}")){
                                if(!cmd.sintaxeCmd(tabelaSimbolos)){
                                    return false;
                                }
                            }
                                    if (tabelaSimbolos.reconhecer("}")) {
                                        return true;
                                    } else{
                             ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                                         TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                                          return false;//depois do identificador, não veio nem ; nem (
                        }
                        } else{
                             ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                                         TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                                          return false;//depois do identificador, não veio nem ; nem (
                        }
                    } else{
                             ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                                         TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                                          return false;//depois do identificador, não veio nem ; nem (
                        }
                } else{
                             ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                                         TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                                          return false;//depois do identificador, não veio nem ; nem (
                        }
            } else{
                             ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                                         TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                                          return false;//depois do identificador, não veio nem ; nem (
                        }
        } else{
                             ErroTabela erro = new ErroTabela(tabelaSimbolos.getLinha(), "Erro na linha " + tabelaSimbolos.getLinha());
                                                         TabelaErros.getInstance().getTabelaErros().add(erro);// Tabela de Erros ja contem o erro. Isso que será impresso na tela.
                                                          return false;//depois do identificador, não veio nem ; nem (
                        }
    }*/


